void DemoExpEntities (HANDLE hLcWnd)
{
HANDLE hEnt, hCRect, hDrw, hBlock;
HANDLE hDrw2, hBlock2, hPline2;
int nPlines, nVers, i, j, iRect, nFiles;
double X, Y;
WCHAR szFileName[64], szBuf[128];
// get drawing and block, linked with CAD window
hDrw = lcPropGetHandle( hLcWnd, LC_PROP_WND_DRW );
hBlock = lcPropGetHandle( hLcWnd, LC_PROP_WND_BLOCK );
nFiles = 0;
iRect = 0;
hCRect = lcCRectsGetFirst( hDrw );
while( hCRect != 0 ){
++iRect;
lcCRectsActive( hDrw, hCRect );
hEnt = lcBlockGetFirstEnt( hBlock );
while( hEnt ){
nPlines = lcExpEntity( hEnt, 0, LC_EXP_ALL, TRUE );
if (nPlines > 0){
hDrw2 = lcCreateDrawing();
lcDrwNew( hDrw2, L"", NULL );
hBlock2 = lcPropGetHandle( hDrw2, LC_PROP_DRW_BLOCK_MODEL );
hPline2 = lcBlockAddPolyline( hBlock2, 0, FALSE, FALSE );
for (i=0; i<nPlines; ++i){
nVers = lcExpGetPline( 0.0 );
for (j=0; j<nVers; ++j){
if (lcExpGetVertex( &X, &Y ) == TRUE){
lcPlineAddVer( hPline2, 0, X, Y );
}
}
lcPlineEnd( hPline2 );
}
swprintf( szFileName, L"C:/Test/ClipRect_%d.zcd", iRect );
if (lcDrwSave( hDrw2, szFileName, FALSE, 0 ) == TRUE){
++nFiles;
}
lcDeleteDrawing( hDrw2 );
hDrw2 = 0;
}
hEnt = lcBlockGetNextEnt( hBlock, hEnt );
}
hCRect = lcCRectsGetNext( hDrw, hCRect );
}
if (nFiles > 0){
swprintf( szBuf, L"%d files was written with names\nC:/Test/ClipRect_n.zcd", nFiles );
lcWndMessage( hLcWnd, szBuf, MB_OK|MB_ICONINFORMATION );
}else{
lcWndMessage( hLcWnd, L"Files was not written", MB_OK|MB_ICONSTOP );
}
}